package com.atguigu.lease.common.utils;


import io.jsonwebtoken.Claims;
import io.jsonwebtoken.CompressionCodecs;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.security.Keys;
import java.security.Key;
import java.util.Date;

public class JwtUtil {

    private static final Long TOKEN_TTL_TIME = 60 * 60 * 1000L ;
    private static final Key signKey  = Keys.hmacShaKeyFor("495b4f316f0e512d07a98fba1fadef7796184383".getBytes());

    public static String createJwt(Long userId, String userName) {
        //设置主题
        //设置自定义字段
        //设置自定义字段
        //过期时间
        //用什么签名
        //压缩
        return Jwts.builder()
                .setSubject("lease-userLogin-token") //设置主题
                .setExpiration(new Date(System.currentTimeMillis() + TOKEN_TTL_TIME))//过期时间
                .claim("userId", userId) //设置自定义字段
                .claim("userName", userName) //设置自定义字段
                .signWith(signKey) //用什么签名
                .compressWith(CompressionCodecs.GZIP) //压缩
                .compact();
    }

    public static Claims parseJwt(String token) {
        //设置主题
        //设置自定义字段
        //设置自定义字段
        //过期时间
        //用什么签名
        //压缩
        return Jwts.parserBuilder()
                .setSigningKey(signKey) //和创建token用同一个key
                .build()
                .parseClaimsJws(token)
                .getBody();
    }
}
